import java.util.*;

public class Cf {
  public static void main(String [ ] args) {
    int days = 31;
    int startingDay = 5;
    int[] breakDays = {1, 3};
    Scheme scheme = new Scheme(SchemeType.THREEONE);



    Excercises excercises = new Excercises(createExTypeMSet(), createExTypeGSet(), createExTypeWSet());
    List<List> genEx = excercises.generate(days);
    System.out.println(genEx.size());

    if (scheme.getType() != SchemeType.FIVETWO) {
      scheme.crop(genEx);
      System.out.println(genEx.size());
    }

    if (scheme.getType() == SchemeType.CUSTOM) {
      scheme.addRestDays(genEx, startingDay, breakDays);
    } else {
      scheme.addRestDays(genEx);
    }
    System.out.println(genEx);
    System.out.println(genEx.size());
  }


  private static HashSet<Ex> createExTypeMSet() {
    HashSet<Ex> exOneSet = new HashSet<Ex>();
    exOneSet.add(new Ex("ex1", ExType.METABOLIC));
    exOneSet.add(new Ex("ex2", ExType.METABOLIC));
    exOneSet.add(new Ex("ex3", ExType.METABOLIC));
    exOneSet.add(new Ex("ex4", ExType.METABOLIC));
    exOneSet.add(new Ex("ex5", ExType.METABOLIC));
    return exOneSet;
  }

  private static HashSet<Ex> createExTypeGSet() {
    HashSet<Ex> exTwoSet = new HashSet<Ex>();
    exTwoSet.add(new Ex("ex1", ExType.GYMNASTIC));
    exTwoSet.add(new Ex("ex2", ExType.GYMNASTIC));
    exTwoSet.add(new Ex("ex3", ExType.GYMNASTIC));
    exTwoSet.add(new Ex("ex4", ExType.GYMNASTIC));
    exTwoSet.add(new Ex("ex5", ExType.GYMNASTIC));
    return exTwoSet;
  }

  private static HashSet<Ex> createExTypeWSet() {
    HashSet<Ex> exThreeSet = new HashSet<Ex>();
    exThreeSet.add(new Ex("ex1", ExType.WEIGHTLIFTING));
    exThreeSet.add(new Ex("ex2", ExType.WEIGHTLIFTING));
    exThreeSet.add(new Ex("ex3", ExType.WEIGHTLIFTING));
    exThreeSet.add(new Ex("ex4", ExType.WEIGHTLIFTING));
    exThreeSet.add(new Ex("ex5", ExType.WEIGHTLIFTING));
    return exThreeSet;
  }
}
